package com.zhuiyun.project.api.system.user.mapper;

import com.zhuiyun.project.api.system.user.entity.TenantUser;
import com.zhuiyun.project.common.mapper.BaseMapper;
import com.zhuiyun.project.utils.pageUtil.PageRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ClassName SysUserMapper
 * @Description TODO
 * @Author zcy
 * @Date 2023/3/27 10:46
 **/
@Mapper
public interface SysUserMapper extends BaseMapper<TenantUser> {

    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    List<TenantUser> selectAllocatedList(TenantUser user);
    List<TenantUser> selectByName(PageRequest pageRequest, String username);
    /**
     * 查询未分配用户角色列表
     */
    List<TenantUser> selectUnallocatedList(TenantUser user);

    /**
     * 根据条件分页查询用户列表
     *
     * @param tenantUser 用户信息
     * @return 用户信息集合信息
     */
    public List<TenantUser> selectUserList(TenantUser tenantUser);

    /**
     * 校验用户名称是否唯一
     *
     * @param loginName 用户名称
     * @return 结果
     */
    TenantUser checkLoginNameUnique(String loginName);

    /**
    * @Author hbx
    * @Description 校验手机号码是否唯一
    * @Date 2023/6/21 15:37
    * @param phone
    */
    TenantUser checkPhoneUnique(String phone);

    /**
    * @Author hbx
    * @Description 校验email是否唯一
    * @Date 2023/6/21 15:39
    * @param email
    */
    TenantUser checkEmailUnique(String email);

    /**
     * 新增保存用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    int insertUser(TenantUser user);

    /**
     * 通过用户ID查询用户
     *
     * @param id 用户ID
     * @return 用户对象信息
     */
    TenantUser selectUserById(Integer id);

    /**
     * 通过用户ID删除用户和角色关联
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteUserRoleByUserId(Integer userId);

    /**
    * @Author hbx
    * @Description 修改用户信息
    * @Date 2023/6/26 14:26
    * @param user
    */
    int updateUser(TenantUser user);

    /**
     * 通过用户ID删除用户
     *
     * @param userId 用户ID
     * @return 结果
     */
    int deleteUserById(Integer userId);

    /**
     * 批量删除用户信息
     *
     * @param userIds 需要删除的用户ID
     * @return 结果
     */
    int deleteUserByIds(Integer[] userIds);

    /**
    * @Author hbx
    * @Description 根据用户名查询用户
    * @Date 2023/6/27 14:29
    * @param loginName
    */
    TenantUser getUserByLoginName(String loginName);

    /**
     * 重置用户密码
     *
     * @param id 用户名
     * @param password 密码
     * @return 结果
     */
    public int resetUserPwd(@Param("id") Integer id, @Param("password") String password);

    /**
     * 修改头像id
     * @param avatarId 头像id
     * @return
     */
    int updateAvatarId(@Param("avatarId") String avatarId, @Param("userId") Integer userId);
}
